import {
    ipcMain
} from 'electron'
// 检测更新，在你想要检查更新的时候执行，renderer事件触发后的操作自行编写
import { autoUpdater } from 'electron-updater'
let mainWindow = null;
function updateHandle(Window,feedUrl) {
	console.log(feedUrl);
	mainWindow = Window;
	let message = {
		error: '检查更新出错',
		checking: '正在检查更新……',
		updateAva: '检测到新版本，正在下载……',
		updateNotAva: '现在使用的就是最新版本，不用更新',
	};
	autoUpdater.autoDownload = false;
	autoUpdater.setFeedURL(feedUrl);
	// 当更新发生错误的时候触发。
	autoUpdater.on('error', function(error) {
		sendUpdateMessage({
			code:'error',
			msg:message.error,
			data:error
		})
	});
	// 当开始检查更新的时候触发。
	autoUpdater.on('checking-for-update', function(data) {
		sendUpdateMessage({
			code:'checking-for-update',
			msg:message.checking,
			data:data
		})
	});
	// 有可用更新时发出。该更新将自动下载。
	autoUpdater.on('update-available', function(info) {
		sendUpdateMessage({
			code:'update-available',
			msg:message.updateAva,
			data:info
		})
	});
	// 当没有可用更新的时候触发。
	autoUpdater.on('update-not-available', function(info) {
		sendUpdateMessage({
			code:'update-not-available',
			msg:message.updateNotAva,
			data:info
		})
	});
	// 更新下载进度事件
	autoUpdater.on('download-progress', function(progressObj) {
		mainWindow.webContents.send('downloadProgress', progressObj)
	})
	// 在更新下载完成的时候触发。
	autoUpdater.on('update-downloaded', function(event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
		//安装更新
		ipcMain.on('isUpdateNow', (e, arg) =>{
			console.log("开始安装");
			//这里有一些处理事件的代码
			autoUpdater.quitAndInstall();
		});
		//下载完成
		mainWindow.webContents.send('isUpdateNow')
	});
	
	//手动更新
	ipcMain.on("downloadUpdate", () => {
		//手动更新
		autoUpdater.downloadUpdate();
	})
	ipcMain.on("checkForUpdate", () => {
		//执行自动更新检查
		autoUpdater.checkForUpdates();
	})
	
}

// 通过main进程发送事件给renderer进程，提示更新信息
function sendUpdateMessage(text) {
	mainWindow.webContents.send('sendToRanderMessage', text)
}

export default {
	updateHandle
}